package com.yinhe.module.dfx.controller;

import com.yinhe.common.annotation.Log;
import com.yinhe.common.core.controller.BaseController;
import com.yinhe.common.core.domain.AjaxResult;
import com.yinhe.common.core.page.TableDataInfo;
import com.yinhe.common.enums.BusinessType;
import com.yinhe.common.utils.SecurityUtils;
import com.yinhe.common.utils.poi.ExcelUtil;
import com.yinhe.system.domain.YhBaseinfo;
import com.yinhe.system.domain.YhPhonerecord;
import com.yinhe.system.service.IYhBaseinfoService;
import com.yinhe.system.service.IYhPhonerecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.Calendar;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 电话记录Controller
 * 
 * @author diaofeixiang
 * @date 2022-07-14
 */
@RestController
@RequestMapping("/dfx/phonerecord")
public class DfxPhonerecordController extends BaseController
{
    @Autowired
    private IYhPhonerecordService yhPhonerecordService;

    @Autowired
    private IYhBaseinfoService yhBaseinfoService;


    /**
     * 查询电话记录列表
     */
    @PreAuthorize("@ss.hasPermi('dfx:phonerecord:list')")
    @GetMapping("/list")
    public TableDataInfo list(YhPhonerecord yhPhonerecord)
    {
        startPage();
        List<YhPhonerecord> list = yhPhonerecordService.selectYhPhonerecordList(yhPhonerecord);
        return getDataTable(list);
    }

    /**
     * 导出电话记录列表
     */
    @PreAuthorize("@ss.hasPermi('dfx:phonerecord:export')")
    @Log(title = "电话记录", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, YhPhonerecord yhPhonerecord)
    {
        List<YhPhonerecord> list = yhPhonerecordService.selectYhPhonerecordList(yhPhonerecord);
        ExcelUtil<YhPhonerecord> util = new ExcelUtil<YhPhonerecord>(YhPhonerecord.class);
        util.exportExcel(response, list, "电话记录数据");
    }

    /**
     * 获取电话记录详细信息
     */
    @PreAuthorize("@ss.hasPermi('dfx:phonerecord:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return AjaxResult.success(yhPhonerecordService.selectYhPhonerecordById(id));
    }

    /**
     * 新增电话记录
     */
    @PreAuthorize("@ss.hasPermi('dfx:phonerecord:add')")
    @Log(title = "电话记录", businessType = BusinessType.INSERT)
    @PostMapping
    @PutMapping
    public AjaxResult add(@RequestBody YhPhonerecord yhPhonerecord)
    {
        //获取当前用户信息
        //yhPhonerecord.setDeptId(Long.valueOf(yhPhonerecord.getAddresseeDepartment()));

        //编号 年份 4位
        Calendar calendar = Calendar.getInstance();
        long year = calendar.get(Calendar.YEAR);
        //当前用户id
        long pnum = SecurityUtils.getLoginUser().getUserId();

        //先插入在更新
        yhPhonerecordService.insertYhPhonerecord(yhPhonerecord);
        //获取插入id
        long iyhd = yhPhonerecord.getId();
        //判断用户id位数和数据库序号id位数
        //用户id为1位 数据库序号id为1位
        if((pnum+"").length()==1 && (iyhd+"").length()==1){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "00"+pnum+""+"00000"+iyhd+"");
        }
        //用户id为1位 数据库序号id为2位
        if((pnum+"").length()==1 && (iyhd+"").length()==2){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "00"+pnum+""+"0000"+iyhd+"");
        }
        //用户id为1位 数据库序号id为3位
        if((pnum+"").length()==1 && (iyhd+"").length()==3){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "00"+pnum+""+"000"+iyhd+"");
        }
        //用户id为1位 数据库序号id为4位
        if((pnum+"").length()==1 && (iyhd+"").length()==4){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "00"+pnum+""+"00"+iyhd+"");
        }
        //用户id为1位 数据库序号id为5位
        if((pnum+"").length()==1 && (iyhd+"").length()==5){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "00"+pnum+""+"0"+iyhd+"");
        }
        //用户id为1位 数据库序号id为6位
        if((pnum+"").length()==1 && (iyhd+"").length()==6){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "00"+pnum+""+""+iyhd+"");
        }

        //用户id为2位 数据库序号id为1位
        if((pnum+"").length()==2 && (iyhd+"").length()==1){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "0"+pnum+""+"00000"+iyhd+"");
        }
        //用户id为2位 数据库序号id为2位
        if((pnum+"").length()==2 && (iyhd+"").length()==2){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "0"+pnum+""+"0000"+iyhd+"");
        }
        //用户id为2位 数据库序号id为3位
        if((pnum+"").length()==2 && (iyhd+"").length()==3){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "0"+pnum+""+"000"+iyhd+"");
        }
        //用户id为2位 数据库序号id为4位
        if((pnum+"").length()==2 && (iyhd+"").length()==4){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "0"+pnum+""+"00"+iyhd+"");
        }
        //用户id为2位 数据库序号id为5位
        if((pnum+"").length()==2 && (iyhd+"").length()==5){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "0"+pnum+""+"0"+iyhd+"");
        }
        //用户id为2位 数据库序号id为6位
        if((pnum+"").length()==2 && (iyhd+"").length()==6){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + "0"+pnum+""+""+iyhd+"");
        }

        //用户id为3位 数据库序号id为1位
        if((pnum+"").length()==3 && (iyhd+"").length()==1){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + ""+pnum+""+"00000"+iyhd+"");
        }
        //用户id为3位 数据库序号id为2位
        if((pnum+"").length()==3 && (iyhd+"").length()==2){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + ""+pnum+""+"0000"+iyhd+"");
        }
        //用户id为3位 数据库序号id为3位
        if((pnum+"").length()==3 && (iyhd+"").length()==3){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + ""+pnum+""+"000"+iyhd+"");
        }
        //用户id为3位 数据库序号id为4位
        if((pnum+"").length()==3 && (iyhd+"").length()==4){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + ""+pnum+""+"00"+iyhd+"");
        }
        //用户id为3位 数据库序号id为5位
        if((pnum+"").length()==3 && (iyhd+"").length()==5){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + ""+pnum+""+"0"+iyhd+"");
        }
        //用户id为3位 数据库序号id为6位
        if((pnum+"").length()==3 && (iyhd+"").length()==6){
            yhPhonerecord.setSerialNumber(year +""+ SecurityUtils.getLoginUser().getDeptId() + ""+pnum+""+""+iyhd+"");
        }


        //受话人 姓名
        yhPhonerecord.setAddresseeName(SecurityUtils.getLoginUser().getUser().getUserName());
        //受话人 单位
        yhPhonerecord.setAddresseeDepartment(String.valueOf(SecurityUtils.getLoginUser().getDeptId()));
        //受话人 职务
        YhBaseinfo yhBaseinfo = new YhBaseinfo();
        yhBaseinfo.setIdNumber(SecurityUtils.getLoginUser().getUser().getIdNumber());
        List<YhBaseinfo> list = yhBaseinfoService.selectYhBaseinfoList(yhBaseinfo);
       // String sex= list.stream().map(u-> u.getDepartmentTitle()).collect(Collectors.toList()).get(0);
        //yhPhonerecord.setAddresseePosition(sex);

      //  System.out.println(sex);



        return toAjax(yhPhonerecordService.updateYhPhonerecord(yhPhonerecord));
    }

    /**
     * 修改电话记录
     */
    @PreAuthorize("@ss.hasPermi('dfx:phonerecord:edit')")
    @Log(title = "电话记录", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody YhPhonerecord yhPhonerecord)
    {
        return toAjax(yhPhonerecordService.updateYhPhonerecord(yhPhonerecord));
    }

    /**
     * 删除电话记录
     */
    @PreAuthorize("@ss.hasPermi('dfx:phonerecord:remove')")
    @Log(title = "电话记录", businessType = BusinessType.DELETE)
	@DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(yhPhonerecordService.deleteYhPhonerecordByIds(ids));
    }
}
